Computer systems are currently in wide use. Some such computer systems are sold by a manufacturer and then heavily customized before they are deployed for a given organization.
By way of example, some enterprise computer systems are generated by a computer system manufacturer. They are then often modified by multiple different individuals before they are deployed at an enterprise organization. For instance, the base computer system sold by the manufacturer may be modified by an independent software vendor (ISV), by various different developers, and even by developers at the organization that will eventually deploy it. This can be done because the needs of an individual organization may be different from other organizations. Thus, the organizations change or customize the systems to fit their individual needs.
Some examples of these types of computer systems include electronic mail systems, collaboration systems, business systems (such as customer relations management systems, enterprise resource planning systems, line-of-business systems, among others), document sharing systems, database management systems, and a wide variety of others. In some architectures that use these types of computer systems, a backend computer system is used to perform some of the processing for the computer system. However, users interact with the backend system through various client devices, such as mobile devices (smart phones, smart phones with large screens such as phablets, tablet computers, among others), laptop computers, desktop computers, etc. Some of the client devices (such as the mobile devices) run a client-based application (such as a mobile application) that the client device uses to connect to the overall system. The mobile applications enable users to easily access and enter data into backend systems, using their mobile device.
This type of architecture presents certain challenges. For instance, where the backend system is customized, the mobile applications may need to be reconfigured in order to interact properly with the backend system. Some mobile applications address this by allowing users to use the built-in functionality of the mobile application, or to only change it through settings. Others provide access to source code for the mobile applications and thereby allow organizations to change it and create customized versions of the mobile applications.
All of these different mechanisms present significant disadvantages. Some limit the flexibility of the system to the built-in functionality or to controls and patterns that are supported by the underlying framework. Some others (where changes to source code are made) require a software vendor to handle, and potentially re-implement, the applications or even the backend systems when changes are made to either the original version of the mobile application or to the backend system.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.